Les permissions des fichiers sous Linux

par Sandstorm · Publié · Mis à jour

Comme évoqué la semaine dernière dans mon Live High-Tech #15, j'ai décidé de mettre fin à mon Wiki (dont tout le monde ignorait l'existence 😀 ) pour intégrer petit à petit son contenu sur JusteGeek.fr. Notez au passage que certains contenus sont déjà présents sur ce site et étaient en doublons ici et sur le Wiki. Allez, on commence donc aujourd'hui avec une publication concernant les permissions des fichiers sous Linux.

Sous linux, il est en effet possible de gérer les permissions sur les fichiers grâce à la commande chmod. Pour commencer, précisons qui sont les utilisateurs, et quels sont les droits dont on parle.

Attribution des Permissions des fichiers sous LinuxAttribution des Permissions des fichiers sous Linux

Attribution des Permissions des fichiers sous Linux

 

Les utilisateurs

Un fichier sous linux appartient à un utilisateur et à un groupe. Il existe trois types d'utilisateurs différents pour lesquels on va pouvoir gérer les droits :

 

Les droits

Plusieurs permissions peuvent être appliquées sur les fichiers/dossiers :

 

L'attribution des permissions

Pour assigner des permissions sur les fichiers/dossiers, il convient de combiner utilisateurs et droits. Voici quelques exemples. Pour donner les droits à l'utilisateur en lecture écriture sur un fichier texte.txt, il convient d'entrer la commande suivante :

chmod u+rw texte.txt

Pour enlever le droit en écriture au groupe et aux autres utilisateurs, il convient de faire :

chmod go-w texte.txt

 

L'attribution des permissions en octal

L'attribution des permissions peut également être faite en utilisant la notation octale. Cela donne par exemple :

chmod 700 texte.txt

Cette commande assigne alors les droits (rwx) à l'utilisateur sur le fichier texte.txt. Voici un tableau pour comprendre la notation octale :

 

 

 

 

user

group

other

Read=4

X

X

X

Write=2

X

 

 

Exec=1

X

X

X

Octal

7

5

5

Affichage des éléments 1 à 4 sur 4 éléments

PrécédentSuivant

Ainsi, on attribuera une valeur 755 avec la commande chmod.

 

Voici un second tableau expliquant les différentes valeurs alphanumériques et octales :

 

 

 

Permissions

Valeur Alphanumérique

Valeur Octale

aucun droit

- - -

0

exécution seulement

- - x

1

écriture seulement

- w -

2

écriture et execution

- w x

3

lecture seulement

r - -

4

lecture et exécution

r - x

5

lecture et écriture

r w -

6

lecture, écriture et exécution

r w x

7

Affichage des éléments 1 à 8 sur 8 éléments

PrécédentSuivant

 

Les droits spéciaux

En plus des permissions des fichiers que l'on vient de voir, il existe 3 droits spéciaux : SUID, SGID et Sticky Bit. Ces permissions sont également attribuées avec la commande chmod. Elles peuvent aussi être définies en octal : on les place alors devant les permissions vues plus haut. On parle alors du groupe des droits spéciaux.

 

SUID

SUID signifie 'Set User ID'. Si ce bit est positionné, la commande se lancera avec l'UID de l'utilisateur. Pour positionner ce bit, on utilise l'option s de la commande chmod.

chmod u+s /bin/cat

Mais on peut aussi positionner le SUID en octal, de la manière suivante: on met à 1 le premier bit du groupe des droits spéciaux

chmod 4755 /bin/cat

Le “4” correspond ici au SUID.

Et pour retirer ce bit :

chmod u-s /bin/cat

 

SGID

SGID signifie 'Set Group ID'. Cela fonctionne de la même façon que le SUID, sauf que dans ce cas, il s'agit de l'ID du groupe. Pour positionner ce bit, on utilise l'option s de la commande chmod.

chmod g+s /bin/cat

Mais on peut aussi positionner le SGID en octal, en mettant à 1 le second bit du groupe des droits spéciaux :

chmod 2755 /bin/cat

Le “2” correspond ici au SGID.

 

Et pour retirer ce bit :

chmod g-s /bin/cat

 

Il est bien sur possible de positionner en même temps le bit SUID et le bit SGID :

chmod ug+s /bin/cat

ou

chmod 6755 /bin/cat

 

Sticky bit

Si ce bit est positionné sur un dossier, seul le propriétaire d'un fichier contenu dans ce dossier pourra le supprimer ou le renommer. Tous les utilisateurs auront cependant accès au fichier en question. Nativement, sous linux, on trouve un exemple concret d'utilisation du Sticky Bit sur le dossier /tmp. Pour positionner le Sticky Bit on utilise l'option t de la commande chmod, ou bien on positionne à 1 le troisième bit du groupe de droits spéciaux.

chmod o+t /home/justegeek/communs

ou

chmod 1666 /home/justegeek/communs

 

Considérations relatives aux bits SUID et SGID

Les bits SUID et SGID doivent être utilisés en connaissances de cause car ils peuvent être la cause d'escalade de privilèges. Le mieux est de les réserver à certaines applications pour lesquelles ils sont nécessaires. Il est préférables d'utiliser les programmes su et sudo plutôt que ces bits spéciaux.

Si vous souhaitez lister l’ensemble des setuid/setgid présents sur le système, vous pouvez utiliser la commande suivante :

find / -type f -perm /6000 -ls 2>/dev/null

 

Considérations relatives au sitcky bit

Le sticky bit à son importance et l'une des bonnes pratiques est de toujours le positionner sur les dossiers accessibles en écriture par tous. De plus, il convient de s'assurer que les dossiers accessibles à tous en écriture appartiennent bien à l'utilisateur root, et ce afin d'empecher l'utilisateur de propriétaire de pouvoir modifier tout, malgré la présence  du sticky bit.